package com.example.messagemodule;

import android.content.Context;

import com.examination.mlib.constants.ProjectConfigure;
import com.example.messagemodule.listener.IMConnectionListener;
import com.example.messagemodule.listener.IMGroupChangeListener;
import com.example.messagemodule.listener.IMMessageListener;
import com.hyphenate.chat.EMClient;
import com.hyphenate.chat.EMOptions;
import com.hyphenate.push.EMPushConfig;
import com.yilijk.base.utils.DevicesUtils;

public class MessageHelper {

    private static  MessageHelper messageHelper = new MessageHelper();

    public static MessageHelper getMessageHelper() {
        return messageHelper;
    }

    public void init(Context context){
        initIM(context,false);
    }
    public void init(Context context,boolean debug){
        initIM(context,debug);
    }

    //环信初始化
    private void initIM(Context context,boolean debug){
        EMOptions options = new EMOptions();
        if (ProjectConfigure.Open.isOpenUnlinePush){
            EMPushConfig.Builder builder = new EMPushConfig.Builder(context);
            builder.enableHWPush() //开发者需要调用该方法来开启华为推送
//                .enableFCM(String senderId) //开发者需要调用该方法来开启FCM推送
                    .enableVivoPush() // 推送证书相关信息配置在AndroidManifest.xml中
//                .enableMeiZuPush(String appId, String appKey)
                    .enableMiPush("2882303761520035404", "5862003532404")
                    .enableOppoPush("17ece558e41c4ecb9693824c0a9e47cf","65d8b691988546b79bda87417a9dc645");

            options.setPushConfig(builder.build());
        }
//       私有化设置
        if (ProjectConfigure.isRestServer){
            options.setRestServer(DevicesUtils.isEnvironment()?ProjectConfigure.IM_App_RestServer_Testing:ProjectConfigure.IM_App_RestServer_onLine);//设置私有云rest地址（ip/域名：port）
            options.setIMServer(DevicesUtils.isEnvironment()?ProjectConfigure.IM_App_IMServer_Testing:ProjectConfigure.IM_App_IMServer_onLine);//设置私有云IM地址
            options.setImPort(DevicesUtils.isEnvironment()?ProjectConfigure.IM_App_ImPort_Testing:ProjectConfigure.IM_App_ImPort_onLine);//设置私有云IM端口号
            options.enableDNSConfig(ProjectConfigure.IM_App_enableDNSConfig);//默认是true，在私有云下，需要关闭（设置成false）
            options.setAppKey(DevicesUtils.isEnvironment() ? ProjectConfigure.IM_App_key_RestServer : ProjectConfigure.IM_App_key_onLine);
        }else{
            options.setAppKey(DevicesUtils.isEnvironment() ? ProjectConfigure.IM_App_key_Testing : ProjectConfigure.IM_App_key_onLine);
        }
// 默认添加好友时，是不需要验证的，改成需要验证
        options.setAcceptInvitationAlways(false);
// 是否自动将消息附件上传到环信服务器，默认为True是使用环信服务器上传下载，如果设为 false，需要开发者自己处理附件消息的上传和下载
        options.setAutoTransferMessageAttachments(true);
// 是否自动下载附件类消息的缩略图等，默认为 true 这里和上边这个参数相关联
        options.setAutoDownloadThumbnail(true);
        //自动登录
//        options.setAutoLogin(true);
//初始化
        EMClient.getInstance().init(context, options);
//在做打包混淆时，关闭debug模式，避免消耗不必要的资源
        EMClient.getInstance().setDebugMode(debug);
        EMClient.getInstance().getOptions().setRequireDeliveryAck(true);

        EMClient.getInstance().chatManager().addMessageListener(new IMMessageListener());
        EMClient.getInstance().groupManager().addGroupChangeListener(new IMGroupChangeListener());
        EMClient.getInstance().addConnectionListener(new IMConnectionListener());
    };

    /**
     * 取消事件监听
     */
    public void unRegister(){
        EMClient.getInstance().logout(true);
        EMClient.getInstance().chatManager().removeMessageListener(new IMMessageListener());
        EMClient.getInstance().groupManager().removeGroupChangeListener(new IMGroupChangeListener());
        EMClient.getInstance().removeConnectionListener(new IMConnectionListener());
    }

}
